//项目的入口文件

//http1--加载http模块
var http=require("http");
var fs=require("fs");
var path=require("path");
var mime=require("mime");
var url=require("url");
var _=require("underscore");
var querystring=require("querystring")
//http2--创建服务
http.createServer(function(req,res){
    
    req.url=req.url.toLowerCase();
    req.method=req.method.toLowerCase();
    var urlObj=url.parse(req.url,true)
    
    res.render=function(filepath,dataSend){
        fs.readFile(filepath,function(err,data){
            if(err){
                throw err;
            }
            if(dataSend){
                var fn=_.template(data.toString("utf8"));
                data=fn(dataSend)

            }
              //此处必须设置响应报文头,此处需要使用mime包
            res.setHeader("Content-Type",mime.getType(req.url))
            res.end(data);
        })
    }
    if(req.url==="/"||req.url==="/index"&&req.method==="get"){
         //xian把数据读取出来
         readNewsData(function(list){
            res.render(path.join(__dirname,"views","index.html"),{list:list})  
         })
              
            
        //读取index.html并返回
        
    }else if(urlObj.pathname==="/item"&&req.method==="get"){
        readNewsData(function(item){
            var newInfo=null; 
            //urlObj.queiry.id
            for(var i=0;i<item.length;i++){
                if(item[i].id.toString()===urlObj.query.id){
                  //urlObj.queiry.id拿到的数据是字符串类型
                  //item[i].id拿到的数据是数字类型
                  newInfo=item[i];
                  break;

                }
            }
            if(newInfo){
              res.render(path.join(__dirname,"views","details.html"),{item:newInfo})
            }
        })
             
             
           

        

    }else if(req.url==="/submit-get"&&req.method==="get"){
        //读取submit.html并返回
   
        res.render(path.join(__dirname,"views","submit-get.html"))
    }
    else if(req.url==="/submit-post"&&req.method==="get"){

        //读取submit.html并返回
   
        res.render(path.join(__dirname,"views","submit-post.html"))
    }
    else if(req.url.startsWith("/resources")&&req.method==="get"){
       
        res.render(path.join(__dirname,req.url))
    }
    else if (req.url.startsWith('/add') && req.method === 'get') {  
        //xian把数据读取出来
        readNewsData(function(list){

            urlObj.query.id=list.length
            list.push(urlObj.query); 
            list=JSON.stringify(list);
              // 把 list 数组中的数据写入到 data.json 文件中
              writeNewsData(list,function(){
                res.statusCode = 302;
                res.statusMessage = 'Found';
                res.setHeader('Location', '/');    
                res.end();
              })           

        })
           
      
    
        
      }else if(req.url==="/add"&&req.method==="post"){
            //使用post方法提交
          

    }else{
        res.writeHead(404,"not found",{
            "Content-Type":"text/html;charset=utf-8"
        })
    }

}).listen(8089,function(){
    console.log("ok!")
})
//封装读取数据方法
function readNewsData(callback){
    fs.readFile(path.join(__dirname,'data','data.json'),'utf-8',function(err,data){
        if (err && err.code!=='ENOENT') {
            throw err;
          }  
          var list=JSON.parse(data || '[]') 
          callback(list)
        })
}
//封装写入数据方法
function writeNewsData(data,callback){
            
            fs.writeFile(path.join(__dirname, 'data', 'data.json'), data, function (err) {
                if (err) {
                  throw err;
                } ;
                callback() 
            })
}
